home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Dev / Bgui / include / bgui / bgui_macros.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-09  |  35.3 KB  |  1,047 lines

  1. #ifndef BGUI_BGUI_MACROS_H
  2. #define BGUI_BGUI_MACROS_H
  3. /*
  4.  * @(#) $Header: /cvsroot/bgui/include/bgui_macros.h,v 41.11 2000/05/09 20:01:52 mlemos Exp $
  5.  *
  6.  * $VER: libraries/bgui_macros.h 41.10 (19.1.97)
  7.  * bgui.library macros.
  8.  *
  9.  * (C) Copyright 1998 Manuel Lemos.
  10.  * (C) Copyright 1996-1997 Ian J. Einman.
  11.  * (C) Copyright 1993-1996 Jaba Development.
  12.  * (C) Copyright 1993-1996 Jan van den Baard.
  13.  * All Rights Reserved.
  14.  *
  15.  * $Log: bgui_macros.h,v $
  16.  * Revision 41.11  2000/05/09 20:01:52  mlemos
  17.  * Merged with the branch Manuel_Lemos_fixes.
  18.  *
  19.  * Revision 41.10.2.3  1999/08/13 04:36:26  mlemos
  20.  * Changed the pre-processor define to denote that this file was included.
  21.  *
  22.  * Revision 41.10.2.2  1999/02/19 05:00:57  mlemos
  23.  * Added support for Storm C.
  24.  *
  25.  * Revision 41.10.2.1  1998/10/12 01:42:27  mlemos
  26.  * Made the definition of compiler specific macros conditionally dependeing on
  27.  * wether the macros are already defined.
  28.  *
  29.  * Revision 41.10  1998/02/25 21:13:54  mlemos
  30.  * Bumping to 41.10
  31.  *
  32.  * Revision 1.1  1998/02/25 17:15:59  mlemos
  33.  * Ian sources
  34.  *
  35.  *
  36.  */
  37.  
  38. #ifndef LIBRARIES_BGUI_H
  39. #include <libraries/bgui.h>
  40. #endif /* LIBRARIES_BGUI_H */
  41.  
  42. /*
  43.  * Compiler specific stuff.
  44.  */
  45. #ifdef _DCC
  46. #ifndef SAVEDS
  47. #define SAVEDS    __geta4
  48. #endif
  49. #ifndef ASM
  50. #define ASM
  51. #endif
  52. #ifndef REG
  53. #define REG(x)    __ ## x
  54. #endif
  55. #elif __STORM__
  56. #ifndef SAVEDS
  57. #define SAVEDS    __saveds
  58. #endif
  59. #ifndef ASM
  60. #define ASM
  61. #endif
  62. #ifndef REG
  63. #define REG(x)    register __ ## x
  64. #endif
  65. #else
  66. #ifndef SAVEDS
  67. #define SAVEDS    __saveds
  68. #endif
  69. #ifndef ASM
  70. #define ASM       __asm
  71. #endif
  72. #ifndef REG
  73. #define REG(x)    register __ ## x
  74. #endif
  75. #endif
  76.  
  77. /*****************************************************************************
  78.  *
  79.  *      General object creation macros.
  80.  */
  81. #define LabelObject     BGUI_NewObject(BGUI_LABEL_IMAGE
  82. #define FrameObject     BGUI_NewObject(BGUI_FRAME_IMAGE
  83. #define VectorObject    BGUI_NewObject(BGUI_VECTOR_IMAGE
  84.  
  85. #define HGroupObject    BGUI_NewObject(BGUI_GROUP_GADGET
  86. #define VGroupObject    BGUI_NewObject(BGUI_GROUP_GADGET, GROUP_Style, GRSTYLE_VERTICAL
  87. #define ButtonObject    BGUI_NewObject(BGUI_BUTTON_GADGET
  88. #define ToggleObject    BGUI_NewObject(BGUI_BUTTON_GADGET, GA_ToggleSelect, TRUE
  89. #define CycleObject     BGUI_NewObject(BGUI_CYCLE_GADGET
  90. #define CheckBoxObject  BGUI_NewObject(BGUI_CHECKBOX_GADGET
  91. #define InfoObject      BGUI_NewObject(BGUI_INFO_GADGET
  92. #define StringObject    BGUI_NewObject(BGUI_STRING_GADGET
  93. #define PropObject      BGUI_NewObject(BGUI_PROP_GADGET
  94. #define IndicatorObject BGUI_NewObject(BGUI_INDICATOR_GADGET
  95. #define ProgressObject  BGUI_NewObject(BGUI_PROGRESS_GADGET
  96. #define SliderObject    BGUI_NewObject(BGUI_SLIDER_GADGET
  97. #define PageObject      BGUI_NewObject(BGUI_PAGE_GADGET
  98. #define MxObject        BGUI_NewObject(BGUI_MX_GADGET
  99. #define ListviewObject  BGUI_NewObject(BGUI_LISTVIEW_GADGET
  100. #define ExternalObject  BGUI_NewObject(BGUI_EXTERNAL_GADGET, GA_Left, 0, GA_Top, 0, GA_Width, 0, GA_Height, 0
  101. #define SeparatorObject BGUI_NewObject(BGUI_SEPARATOR_GADGET
  102. #define AreaObject      BGUI_NewObject(BGUI_AREA_GADGET
  103. #define ViewObject      BGUI_NewObject(BGUI_VIEW_GADGET
  104. #define PaletteObject   BGUI_NewObject(BGUI_PALETTE_GADGET
  105. #define PopButtonObject BGUI_NewObject(BGUI_POPBUTTON_GADGET
  106.  
  107. #define WindowObject    BGUI_NewObject(BGUI_WINDOW_OBJECT
  108. #define FileReqObject   BGUI_NewObject(BGUI_FILEREQ_OBJECT
  109. #define FontReqObject   BGUI_NewObject(BGUI_FONTREQ_OBJECT
  110. #define ScreenReqObject BGUI_NewObject(BGUI_SCREENREQ_OBJECT
  111. #define CommodityObject BGUI_NewObject(BGUI_COMMODITY_OBJECT
  112. #define ARexxObject     BGUI_NewObject(BGUI_AREXX_OBJECT
  113.  
  114. #define EndObject       TAG_END)
  115.  
  116. /* Typo */
  117. #define SeperatorObject         SeparatorObject
  118.  
  119. /*****************************************************************************
  120.  *
  121.  *      Label creation.
  122.  */
  123. #define Label(l)                LAB_Label, l
  124. #define UScoreLabel(l,u)        LAB_Label, l, LAB_Underscore, u
  125. #define Style(s)                LAB_Style, s
  126. #define Place(p)                LAB_Place, p
  127.  
  128. /*****************************************************************************
  129.  *
  130.  *      Frames.
  131.  */
  132. #define ButtonFrame             FRM_Type, FRTYPE_BUTTON
  133. #define RidgeFrame              FRM_Type, FRTYPE_RIDGE
  134. #define DropBoxFrame            FRM_Type, FRTYPE_DROPBOX
  135. #define NeXTFrame               FRM_Type, FRTYPE_NEXT
  136. #define RadioFrame              FRM_Type, FRTYPE_RADIOBUTTON
  137. #define XenFrame                FRM_Type, FRTYPE_XEN_BUTTON
  138. #define TabAboveFrame           FRM_Type, FRTYPE_TAB_ABOVE
  139. #define TabBelowFrame           FRM_Type, FRTYPE_TAB_BELOW
  140. #define BorderFrame             FRM_Type, FRTYPE_BORDER
  141. #define FuzzButtonFrame         FRM_Type, FRTYPE_FUZZ_BUTTON
  142. #define FuzzRidgeFrame          FRM_Type, FRTYPE_FUZZ_RIDGE
  143. #define NoFrame                 FRM_Type, FRTYPE_NONE
  144. #define DefaultFrame            FRM_Type, FRTYPE_DEFAULT
  145.  
  146. /* For clarity. */
  147. #define StringFrame             RidgeFrame
  148. #define MxFrame                 RadioFrame
  149.  
  150. #define FrameTitle(t)           FRM_Title, t
  151.  
  152. /* Built-in back fills */
  153. #define ShineRaster             FRM_BackFill, SHINE_RASTER
  154. #define ShadowRaster            FRM_BackFill, SHADOW_RASTER
  155. #define ShineShadowRaster       FRM_BackFill, SHINE_SHADOW_RASTER
  156. #define FillRaster              FRM_BackFill, FILL_RASTER
  157. #define ShineFillRaster         FRM_BackFill, SHINE_FILL_RASTER
  158. #define ShadowFillRaster        FRM_BackFill, SHADOW_FILL_RASTER
  159. #define ShineBlock              FRM_BackFill, SHINE_BLOCK
  160. #define ShadowBlock             FRM_BackFill, SHADOW_BLOCK
  161.  
  162. /*****************************************************************************
  163.  *
  164.  *      Vector images.
  165.  */
  166. #define GetPath                 VIT_BuiltIn, BUILTIN_GETPATH
  167. #define GetFile                 VIT_BuiltIn, BUILTIN_GETFILE
  168. #define CheckMark               VIT_BuiltIn, BUILTIN_CHECKMARK
  169. #define PopUp                   VIT_BuiltIn, BUILTIN_POPUP
  170. #define ArrowUp                 VIT_BuiltIn, BUILTIN_ARROW_UP
  171. #define ArrowDown               VIT_BuiltIn, BUILTIN_ARROW_DOWN
  172. #define ArrowLeft               VIT_BuiltIn, BUILTIN_ARROW_LEFT
  173. #define ArrowRight              VIT_BuiltIn, BUILTIN_ARROW_RIGHT
  174.  
  175. /*****************************************************************************
  176.  *
  177.  *      Group class macros.
  178.  */
  179. #define StartMember             GROUP_Member
  180. #define EndMember               TAG_END, 0
  181. #define Spacing(p)              GROUP_Spacing, p
  182. #define Offset(p)               GROUP_Offset, p
  183. #define HOffset(p)              GROUP_HorizOffset, p
  184. #define VOffset(p)              GROUP_VertOffset, p
  185. #define LOffset(p)              GROUP_LeftOffset, p
  186. #define ROffset(p)              GROUP_RightOffset, p
  187. #define TOffset(p)              GROUP_TopOffset, p
  188. #define BOffset(p)              GROUP_BottomOffset, p
  189. #define VarSpace(w)             GROUP_SpaceObject, w
  190. #define EqualWidth              GROUP_EqualWidth, TRUE
  191. #define EqualHeight             GROUP_EqualHeight, TRUE
  192. #define Rows(n)                 GROUP_Rows, n
  193. #define Columns(n)              GROUP_Columns, n
  194.  
  195. #define NormalSpacing           GROUP_Spacing, GRSPACE_NORMAL
  196. #define NormalHOffset           GROUP_HorizOffset, GRSPACE_NORMAL
  197. #define NormalVOffset           GROUP_VertOffset, GRSPACE_NORMAL
  198. #define NarrowSpacing           GROUP_Spacing, GRSPACE_NARROW
  199. #define NarrowHOffset           GROUP_HorizOffset, GRSPACE_NARROW
  200. #define NarrowVOffset           GROUP_VertOffset, GRSPACE_NARROW
  201. #define WideSpacing             GROUP_Spacing, GRSPACE_WIDE
  202. #define WideHOffset             GROUP_HorizOffset, GRSPACE_WIDE
  203. #define WideVOffset             GROUP_VertOffset, GRSPACE_WIDE
  204. #define NormalOffset            NormalHOffset, NormalVOffset
  205.  
  206. /*****************************************************************************
  207.  *
  208.  *      Layout macros.
  209.  */
  210. #define FixMinWidth             LGO_FixMinWidth, TRUE
  211. #define FixMinHeight            LGO_FixMinHeight, TRUE
  212. #define Weight(w)               LGO_Weight, w
  213. #define FixWidth(w)             LGO_FixWidth, w
  214. #define FixHeight(h)            LGO_FixHeight, h
  215. #define Align                   LGO_Align, TRUE
  216. #define AlignTop                LGO_VAlign, GRALIGN_TOP
  217. #define AlignBottom             LGO_VAlign, GRALIGN_BOTTOM
  218. #define AlignCenterV            LGO_VAlign, GRALIGN_CENTER
  219. #define AlignLeft               LGO_HAlign, GRALIGN_LEFT
  220. #define AlignRight              LGO_HAlign, GRALIGN_RIGHT
  221. #define AlignCenterH            LGO_HAlign, GRALIGN_CENTER
  222. #define FixMinSize              FixMinWidth, FixMinHeight
  223. #define FixSize(w,h)            FixWidth(w), FixHeight(h)
  224. #define NoAlign                 LGO_NoAlign, TRUE
  225. #define FixAspect(x,y)          LGO_FixAspect, ((x) << 16) | (y)
  226.  
  227. /*****************************************************************************
  228.  *
  229.  *      Page class macros.
  230.  */
  231. #define PageMember              PAGE_Member
  232.  
  233. /*****************************************************************************
  234.  *
  235.  *      "Quick" button creation macros.
  236.  */
  237. #define PrefButton(label,id)\
  238.         ButtonObject,\
  239.                 LAB_Label,              label,\
  240.                 GA_ID,                  id,\
  241.         EndObject
  242.  
  243. #define Button(label,id)\
  244.         ButtonObject,\
  245.                 LAB_Label,              label,\
  246.                 GA_ID,                  id,\
  247.                 ButtonFrame,\
  248.         EndObject
  249.  
  250.  
  251. #define PrefToggle(label,state,id)\
  252.         ToggleObject,\
  253.                 LAB_Label,              label,\
  254.                 GA_ID,                  id,\
  255.                 GA_Selected,            state,\
  256.         EndObject
  257.  
  258. #define Toggle(label,state,id)\
  259.         ToggleObject,\
  260.                 LAB_Label,              label,\
  261.                 GA_ID,                  id,\
  262.                 GA_Selected,            state,\
  263.                 ButtonFrame,\
  264.         EndObject
  265.  
  266. #define XenButton(label,id)\
  267.         ButtonObject,\
  268.                 LAB_Label,              label,\
  269.                 GA_ID,                  id,\
  270.                 XenFrame,\
  271.         EndObject
  272.  
  273. #define XenToggle(label,state,id)\
  274.         ToggleObject,\
  275.                 LAB_Label,              label,\
  276.                 GA_ID,                  id,\
  277.                 GA_Selected,            state,\
  278.                 XenFrame,\
  279.         EndObject
  280.  
  281. #define KeyButton      Button
  282. #define KeyToggle      Toggle
  283. #define XenKeyButton   XenButton
  284. #define XenKeyToggle   XenToggle
  285.  
  286. /*****************************************************************************
  287.  *
  288.  *      "Quick" cycle creation macros.
  289.  */
  290. #define PrefCycle(label,labels,active,id)\
  291.         CycleObject,\
  292.                 LAB_Label,              label,\
  293.                 GA_ID,                  id,\
  294.                 CYC_Labels,             labels,\
  295.                 CYC_Active,             active,\
  296.         EndObject
  297.  
  298. #define Cycle(label,labels,active,id)\
  299.         CycleObject,\
  300.                 LAB_Label,              label,\
  301.                 GA_ID,                  id,\
  302.                 ButtonFrame,\
  303.                 CYC_Labels,             labels,\
  304.                 CYC_Active,             active,\
  305.                 CYC_Popup,              FALSE,\
  306.         EndObject
  307.  
  308. #define XenCycle(label,labels,active,id)\
  309.         CycleObject,\
  310.                 LAB_Label,              label,\
  311.                 GA_ID,                  id,\
  312.                 XenFrame,\
  313.                 CYC_Labels,             labels,\
  314.                 CYC_Active,             active,\
  315.                 CYC_Popup,              FALSE,\
  316.         EndObject
  317.  
  318. #define PopCycle(label,labels,active,id)\
  319.         CycleObject,\
  320.                 LAB_Label,              label,\
  321.                 GA_ID,                  id,\
  322.                 ButtonFrame,\
  323.                 CYC_Labels,             labels,\
  324.                 CYC_Active,             active,\
  325.                 CYC_Popup,              TRUE,\
  326.         EndObject
  327.  
  328. #define XenPopCycle(label,labels,active,id)\
  329.         CycleObject,\
  330.                 LAB_Label,              label,\
  331.                 GA_ID,                  id,\
  332.                 XenFrame,\
  333.                 CYC_Labels,             labels,\
  334.                 CYC_Active,             active,\
  335.                 CYC_Popup,              TRUE,\
  336.         EndObject
  337.  
  338. #define KeyCycle       Cycle
  339. #define XenKeyCycle    XenCycle
  340. #define KeyPopCycle    PopCycle
  341. #define XenKeyPopCycle XenPopCycle
  342.  
  343. /*****************************************************************************
  344.  *
  345.  *      "Quick" checkbox creation macros.
  346.  */
  347. #define PrefCheckBoxNF(label,state,id)\
  348.         CheckBoxObject,\
  349.                 LAB_Label,              label,\
  350.                 GA_ID,                  id,\
  351.                 GA_Selected,            state,\
  352.         EndObject
  353.  
  354. #define CheckBoxNF(label,state,id)\
  355.         CheckBoxObject,\
  356.                 LAB_Label,              label,\
  357.                 GA_ID,                  id,\
  358.                 ButtonFrame,\
  359.                 GA_Selected,            state,\
  360.         EndObject
  361.  
  362. #define XenCheckBoxNF(label,state,id)\
  363.         CheckBoxObject,\
  364.                 LAB_Label,              label,\
  365.                 GA_ID,                  id,\
  366.                 XenFrame,\
  367.                 GA_Selected,            state,\
  368.         EndObject
  369.  
  370. #define PrefCheckBox(label,state,id) PrefCheckBoxNF(label,state,id), FixMinSize
  371. #define CheckBox(label,state,id)     CheckBoxNF(label,state,id), FixMinSize
  372. #define XenCheckBox(label,state,id)  XenCheckBoxNF(label,state,id), FixMinSize
  373.  
  374. #define KeyCheckBoxNF    CheckBoxNF
  375. #define XenKeyCheckBoxNF XenCheckBoxNF
  376. #define KeyCheckBox      CheckBox
  377. #define XenKeyCheckBox   XenCheckBox
  378.  
  379. /*****************************************************************************
  380.  *
  381.  *      "Quick" info object creation macros.
  382.  */
  383. #define PrefInfoFixed(label,text,args,numlines)\
  384.         InfoObject,\
  385.                 LAB_Label,              label,\
  386.                 DefaultFrame,\
  387.                 INFO_TextFormat,        text,\
  388.                 INFO_Args,              args,\
  389.                 INFO_MinLines,          numlines,\
  390.                 INFO_FixTextWidth,      TRUE,\
  391.         EndObject
  392.  
  393. #define PrefInfo(label,text,args,numlines)\
  394.         InfoObject,\
  395.                 LAB_Label,              label,\
  396.                 DefaultFrame,\
  397.                 INFO_TextFormat,        text,\
  398.                 INFO_Args,              args,\
  399.                 INFO_MinLines,          numlines,\
  400.         EndObject
  401.  
  402. #define InfoFixed(label,text,args,numlines)\
  403.         InfoObject,\
  404.                 LAB_Label,              label,\
  405.                 ButtonFrame,\
  406.                 FRM_Flags,              FRF_RECESSED,\
  407.                 INFO_TextFormat,        text,\
  408.                 INFO_Args,              args,\
  409.                 INFO_MinLines,          numlines,\
  410.                 INFO_FixTextWidth,      TRUE,\
  411.         EndObject
  412.  
  413. #define InfoObj(label,text,args,numlines)\
  414.         InfoObject,\
  415.                 LAB_Label,              label,\
  416.                 ButtonFrame,\
  417.                 FRM_Flags,              FRF_RECESSED,\
  418.                 INFO_TextFormat,        text,\
  419.                 INFO_Args,              args,\
  420.                 INFO_MinLines,          numlines,\
  421.         EndObject
  422.  
  423. /*****************************************************************************
  424.  *
  425.  *      "Quick" string/integer creation macros.
  426.  */
  427. #define PrefString(label,contents,maxchars,id)\
  428.         StringObject,\
  429.                 LAB_Label,              label,\
  430.                 STRINGA_TextVal,        contents,\
  431.                 STRINGA_MaxChars,       maxchars,\
  432.                 GA_ID,                  id,\
  433.                 GA_TabCycle,            TRUE,\
  434.         EndObject
  435.  
  436. #define String(label,contents,maxchars,id)\
  437.         StringObject,\
  438.                 LAB_Label,              label,\
  439.                 RidgeFrame,\
  440.                 STRINGA_TextVal,        contents,\
  441.                 STRINGA_MaxChars,       maxchars,\
  442.                 GA_ID,                  id,\
  443.         EndObject
  444.  
  445. #define TabString(label,contents,maxchars,id)\
  446.         StringObject,\
  447.                 LAB_Label,              label,\
  448.                 RidgeFrame,\
  449.                 STRINGA_TextVal,        contents,\
  450.                 STRINGA_MaxChars,       maxchars,\
  451.                 GA_ID,                  id,\
  452.                 GA_TabCycle,            TRUE,\
  453.         EndObject
  454.  
  455. #define PrefInteger(label,contents,maxchars,id)\
  456.         StringObject,\
  457.                 LAB_Label,              label,\
  458.                 STRINGA_LongVal,        contents,\
  459.                 STRINGA_MaxChars,       maxchars,\
  460.                 GA_ID,                  id,\
  461.                 GA_TabCycle,            TRUE,\
  462.         EndObject
  463.  
  464. #define Integer(label,contents,maxchars,id)\
  465.         StringObject,\
  466.                 LAB_Label,              label,\
  467.                 RidgeFrame,\
  468.                 STRINGA_LongVal,        contents,\
  469.                 STRINGA_MaxChars,       maxchars,\
  470.                 GA_ID,                  id,\
  471.         EndObject
  472.  
  473. #define TabInteger(label,contents,maxchars,id)\
  474.         StringObject,\
  475.                 LAB_Label,              label,\
  476.                 RidgeFrame,\
  477.                 STRINGA_LongVal,        contents,\
  478.                 STRINGA_MaxChars,       maxchars,\
  479.                 GA_ID,                  id,\
  480.                 GA_TabCycle,            TRUE,\
  481.         EndObject
  482.  
  483. #define KeyString     String
  484. #define TabKeyString  TabString
  485. #define KeyInteger    Integer
  486. #define TabKeyInteger TabInteger
  487.  
  488. /*
  489.  *      STRINGA_Pens & STRINGA_ActivePens pen-pack macro.
  490.  */
  491. #define PACKPENS(a,b) (((b<<8)&0xFF00)|((a)&0x00FF))
  492.  
  493. /*****************************************************************************
  494.  *
  495.  *      "Quick" scroller creation macros.
  496.  */
  497. #define HorizScroller(label,top,total,visible,id)\
  498.         PropObject,\
  499.                 LAB_Label,              label,\
  500.                 PGA_Top,                top,\
  501.                 PGA_Total,              total,\
  502.                 PGA_Visible,            visible,\
  503.                 PGA_Freedom,            FREEHORIZ,\
  504.                 GA_ID,                  id,\
  505.                 PGA_Arrows,             TRUE,\
  506.         EndObject
  507.  
  508. #define VertScroller(label,top,total,visible,id)\
  509.         PropObject,\
  510.                 LAB_Label,              label,\
  511.                 PGA_Top,                top,\
  512.                 PGA_Total,              total,\
  513.                 PGA_Visible,            visible,\
  514.                 GA_ID,                  id,\
  515.                 PGA_Arrows,             TRUE,\
  516.         EndObject
  517.  
  518. #define KeyHorizScroller HorizScroller
  519. #define KeyVertScroller  VertScroller
  520.  
  521. /*****************************************************************************
  522.  *
  523.  *      "Quick" indicator creation macros.
  524.  */
  525. #define Indicator(min,max,level,just)\
  526.         IndicatorObject,\
  527.                 INDIC_Min,              min,\
  528.                 INDIC_Max,              max,\
  529.                 INDIC_Level,            level,\
  530.                 INDIC_Justification,    just,\
  531.         EndObject
  532.  
  533. #define IndicatorFormat(min,max,level,just,format)\
  534.         IndicatorObject,\
  535.                 INDIC_Min,              min,\
  536.                 INDIC_Max,              max,\
  537.                 INDIC_Level,            level,\
  538.                 INDIC_Justification,    just,\
  539.                 INDIC_FormatString,     format,\
  540.         EndObject
  541.  
  542. /*****************************************************************************
  543.  *
  544.  *      "Quick" progress creation macros.
  545.  */
  546. #define HorizProgress(label,min,max,done)\
  547.         ProgressObject,\
  548.                 LAB_Label,              label,\
  549.                 ButtonFrame,\
  550.                 FRM_Flags,              FRF_RECESSED,\
  551.                 PROGRESS_Min,           min,\
  552.                 PROGRESS_Max,           max,\
  553.                 PROGRESS_Done,          done,\
  554.         EndObject
  555.  
  556. #define VertProgress(label,min,max,done)\
  557.         ProgressObject,\
  558.                 LAB_Label,              label,\
  559.                 ButtonFrame,\
  560.                 FRM_Flags,              FRF_RECESSED,\
  561.                 PROGRESS_Min,           min,\
  562.                 PROGRESS_Max,           max,\
  563.                 PROGRESS_Done,          done,\
  564.                 PROGRESS_Vertical,      TRUE,\
  565.         EndObject
  566.  
  567. #define HorizProgressFS(label,min,max,done,fstr)\
  568.         ProgressObject,\
  569.                 LAB_Label,              label,\
  570.                 ButtonFrame,\
  571.                 FRM_Flags,              FRF_RECESSED,\
  572.                 PROGRESS_Min,           min,\
  573.                 PROGRESS_Max,           max,\
  574.                 PROGRESS_Done,          done,\
  575.                 PROGRESS_FormatString,  fstr,\
  576.         EndObject
  577.  
  578. #define VertProgressFS(label,min,max,done,fstr)\
  579.         ProgressObject,\
  580.                 LAB_Label,              label,\
  581.                 ButtonFrame,\
  582.                 FRM_Flags,              FRF_RECESSED,\
  583.                 PROGRESS_Min,           min,\
  584.                 PROGRESS_Max,           max,\
  585.                 PROGRESS_Done,          done,\
  586.                 PROGRESS_Vertical,      TRUE,\
  587.                 PROGRESS_FormatString,  fstr,\
  588.         EndObject
  589.  
  590. /*****************************************************************************
  591.  *
  592.  *      "Quick" slider creation macros.
  593.  */
  594. #define HorizSlider(label,min,max,level,id)\
  595.         SliderObject,\
  596.                 LAB_Label,              label,\
  597.                 SLIDER_Min,             min,\
  598.                 SLIDER_Max,             max,\
  599.                 SLIDER_Level,           level,\
  600.                 GA_ID,                  id,\
  601.         EndObject
  602.  
  603. #define VertSlider(label,min,max,level,id)\
  604.         SliderObject,\
  605.                 LAB_Label,              label,\
  606.                 SLIDER_Min,             min,\
  607.                 SLIDER_Max,             max,\
  608.                 SLIDER_Level,           level,\
  609.                 PGA_Freedom,            FREEVERT,\
  610.                 GA_ID,                  id,\
  611.         EndObject
  612.  
  613. #define KeyHorizSlider HorizSlider
  614. #define KeyVertSlider  VertSlider
  615.  
  616. /*****************************************************************************
  617.  *
  618.  *      "Quick" mx creation macros.
  619.  */
  620. #define PrefMx(label,labels,active,id)\
  621.         MxObject,\
  622.                 GROUP_Style,            GRSTYLE_VERTICAL,\
  623.                 LAB_Label,              label,\
  624.                 MX_Labels,              labels,\
  625.                 MX_Active,              active,\
  626.                 GA_ID,                  id,\
  627.         EndObject, FixMinSize
  628.  
  629. #define RightMx(label,labels,active,id)\
  630.         MxObject,\
  631.                 GROUP_Style,            GRSTYLE_VERTICAL,\
  632.                 LAB_Label,              label,\
  633.                 MX_Labels,              labels,\
  634.                 MX_Active,              active,\
  635.                 MX_LabelPlace,          PLACE_RIGHT,\
  636.                 GA_ID,                  id,\
  637.         EndObject, FixMinSize
  638.  
  639. #define LeftMx(label,labels,active,id)\
  640.         MxObject,\
  641.                 GROUP_Style,            GRSTYLE_VERTICAL,\
  642.                 LAB_Label,              label,\
  643.                 MX_Labels,              labels,\
  644.                 MX_Active,              active,\
  645.                 MX_LabelPlace,          PLACE_LEFT,\
  646.                 GA_ID,                  id,\
  647.         EndObject, FixMinSize
  648.  
  649. #define Tabs(label,labels,active,id)\
  650.         MxObject,\
  651.                 MX_TabsObject,          TRUE,\
  652.                 LAB_Label,              label,\
  653.                 MX_Labels,              labels,\
  654.                 MX_Active,              active,\
  655.                 GA_ID,                  id,\
  656.         EndObject, FixMinHeight
  657.  
  658.  
  659. #define TabsEqual(label,labels,active,id)\
  660.         MxObject,\
  661.                 GROUP_EqualWidth,       TRUE,\
  662.                 MX_TabsObject,          TRUE,\
  663.                 LAB_Label,              label,\
  664.                 MX_Labels,              labels,\
  665.                 MX_Active,              active,\
  666.                 GA_ID,                  id,\
  667.         EndObject, FixMinHeight
  668.  
  669. #define USDTabs(label,labels,active,id)\
  670.         MxObject,\
  671.                 MX_TabsObject,          TRUE,\
  672.                 LAB_Label,              label,\
  673.                 MX_Labels,              labels,\
  674.                 MX_Active,              active,\
  675.                 MX_TabsUpsideDown,      TRUE,\
  676.                 GA_ID,                  id,\
  677.         EndObject, FixMinHeight
  678.  
  679. #define USDTabsEqual(label,labels,active,id)\
  680.         MxObject,\
  681.                 GROUP_EqualWidth,       TRUE,\
  682.                 MX_TabsObject,          TRUE,\
  683.                 LAB_Label,              label,\
  684.                 MX_Labels,              labels,\
  685.                 MX_Active,              active,\
  686.                 MX_TabsUpsideDown,      TRUE,\
  687.                 GA_ID,                  id,\
  688.         EndObject, FixMinHeight
  689.  
  690. #define RightMxKey      RightMx
  691. #define LeftMxKey       LeftMx
  692. #define TabsKey         Tabs
  693. #define TabsEqualKey    TabsEqual
  694. #define USDTabsKey      USDTabs
  695. #define USDTabsEqualKey USDTabsEqual
  696.  
  697. /*****************************************************************************
  698.  *
  699.  *      "Quick" listview creation macros.
  700.  */
  701. #define StrListview(label,strings,id)\
  702.         ListviewObject,\
  703.                 LAB_Label,              label,\
  704.                 GA_ID,                  id,\
  705.                 LISTV_EntryArray,       strings,\
  706.         EndObject
  707.  
  708. #define StrListviewSorted(label,strings,id)\
  709.         ListviewObject,\
  710.                 LAB_Label,              label,\
  711.                 GA_ID,                  id,\
  712.                 LISTV_EntryArray,       strings,\
  713.                 LISTV_SortEntryArray,   TRUE,\
  714.         EndObject
  715.  
  716. #define ReadStrListview(label,strings)\
  717.         ListviewObject,\
  718.                 LAB_Label,              label,\
  719.                 LISTV_EntryArray,       strings,\
  720.                 LISTV_ReadOnly,         TRUE,\
  721.         EndObject
  722.  
  723. #define ReadStrListviewSorted(label,strings)\
  724.         ListviewObject,\
  725.                 LAB_Label,              label,\
  726.                 LISTV_EntryArray,       strings,\
  727.                 LISTV_SortEntryArray,   TRUE,\
  728.                 LISTV_ReadOnly,         TRUE,\
  729.         EndObject
  730.  
  731. #define MultiStrListview(label,strings,id)\
  732.         ListviewObject,\
  733.                 LAB_Label,              label,\
  734.                 GA_ID,                  id,\
  735.                 LISTV_EntryArray,       strings,\
  736.                 LISTV_MultiSelect,      TRUE,\
  737.         EndObject
  738.  
  739. #define MultiStrListviewSorted(label,strings,id)\
  740.         ListviewObject,\
  741.                 LAB_Label,              label,\
  742.                 GA_ID,                  id,\
  743.                 LISTV_EntryArray,       strings,\
  744.                 LISTV_SortEntryArray,   TRUE,\
  745.                 LISTV_MultiSelect,      TRUE,\
  746.         EndObject
  747.  
  748. /*****************************************************************************
  749.  *
  750.  *      "Quick" separator bar creation macros.
  751.  */
  752. #define VertSeparator\
  753.         SeperatorObject,\
  754.         EndObject, FixMinWidth
  755.  
  756. #define VertThinSeparator\
  757.         SeperatorObject,\
  758.                 SEP_Thin,               TRUE,\
  759.         EndObject, FixMinWidth
  760.  
  761. #define HorizSeparator\
  762.         SeperatorObject,\
  763.                 SEP_Horiz,              TRUE,\
  764.         EndObject, FixMinHeight
  765.  
  766. #define TitleSeparator(t)\
  767.         SeperatorObject,\
  768.                 SEP_Horiz,              TRUE,\
  769.                 SEP_Title,              t,\
  770.         EndObject, FixMinHeight
  771.  
  772. #define HTitleSeparator(t)\
  773.         SeperatorObject,\
  774.                 SEP_Horiz,              TRUE,\
  775.                 SEP_Title,              t,\
  776.                 SEP_Highlight,          TRUE,\
  777.         EndObject, FixMinHeight
  778.  
  779. #define CTitleSeparator(t)\
  780.         SeperatorObject,\
  781.                 SEP_Horiz,              TRUE,\
  782.                 SEP_Title,              t,\
  783.                 SEP_CenterTitle,        TRUE,\
  784.         EndObject, FixMinHeight
  785.  
  786. #define CHTitleSeparator(t)\
  787.         SeperatorObject,\
  788.                 SEP_Horiz,              TRUE,\
  789.                 SEP_Title,              t,\
  790.                 SEP_Highlight,          TRUE,\
  791.                 SEP_CenterTitle,        TRUE,\
  792.         EndObject, FixMinHeight
  793.  
  794. #define TitleSeparatorLeft(t)\
  795.         SeperatorObject,\
  796.                 SEP_Horiz,              TRUE,\
  797.                 SEP_Title,              t,\
  798.                 SEP_TitleLeft,          TRUE,\
  799.         EndObject, FixMinHeight
  800.  
  801. #define HTitleSeparatorLeft(t)\
  802.         SeperatorObject,\
  803.                 SEP_Horiz,              TRUE,\
  804.                 SEP_Title,              t,\
  805.                 SEP_Highlight,          TRUE,\
  806.                 SEP_TitleLeft,          TRUE,\
  807.         EndObject, FixMinHeight
  808.  
  809. #define CTitleSeparatorLeft(t)\
  810.         SeperatorObject,\
  811.                 SEP_Horiz,              TRUE,\
  812.                 SEP_Title,              t,\
  813.                 SEP_CenterTitle,        TRUE,\
  814.                 SEP_TitleLeft,          TRUE,\
  815.         EndObject, FixMinHeight
  816.  
  817. #define CHTitleSeparatorLeft(t)\
  818.         SeperatorObject,\
  819.                 SEP_Horiz,              TRUE,\
  820.                 SEP_Title,              t,\
  821.                 SEP_Highlight,          TRUE,\
  822.                 SEP_CenterTitle,        TRUE,\
  823.                 SEP_TitleLeft,          TRUE,\
  824.         EndObject, FixMinHeight
  825.  
  826. /* Typos */
  827. #define VertSeperator           VertSeparator
  828. #define VertThinSeperator       VertThinSeparator
  829. #define HorizSeperator          HorizSeparator
  830. #define TitleSeperator          TitleSeparator
  831. #define HTitleSeperator         HTitleSeparator
  832. #define CTitleSeperator         CTitleSeparator
  833. #define CHTitleSeperator        CHTitleSeparator
  834.  
  835. /*****************************************************************************
  836.  *
  837.  *      Some simple menu macros.
  838.  */
  839. #define Title(t)\
  840.         { NM_TITLE, t, NULL, 0, 0, NULL }
  841. #define Item(t,s,i)\
  842.         { NM_ITEM, t, s, 0, 0, (APTR)i }
  843. #define ItemBar\
  844.         { NM_ITEM, NM_BARLABEL, NULL, 0, 0, NULL }
  845. #define SubItem(t,s,i)\
  846.         { NM_SUB, t, s, 0, 0, (APTR)i }
  847. #define SubBar\
  848.         { NM_SUB, NM_BARLABEL, NULL, 0, 0, NULL }
  849. #define End\
  850.         { NM_END, NULL, NULL, 0, 0, NULL }
  851.  
  852. /*****************************************************************************
  853.  *
  854.  *      Base class method macros.
  855.  */
  856. #define AddMap(object,target,map)\
  857.         DoMethod( object, BASE_ADDMAP, target, map )
  858.  
  859. #define AddCondit(object,target,ttag,tdat,ftag,fdat,stag,sdat)\
  860.         DoMethod( object, BASE_ADDCONDITIONAL, target,\
  861.                   ttag, tdat,\
  862.                   ftag, fdat,\
  863.                   stag, sdat )
  864.  
  865. #define AddHook(object,hook)\
  866.         DoMethod( object, BASE_ADDHOOK, hook )
  867.  
  868. #define RemMap(object,target)\
  869.         DoMethod( object, BASE_REMMAP, target )
  870.  
  871. #define RemCondit(object,target)\
  872.         DoMethod( object, BASE_REMCONDITIONAL, target )
  873.  
  874. #define RemHook( object,hook)\
  875.         DoMethod( object, BASE_REMHOOK, hook )
  876.  
  877. /*****************************************************************************
  878.  *
  879.  *      Listview class method macros.
  880.  */
  881. #define AddEntry(window,object,entry,how)\
  882.         BGUI_DoGadgetMethod( object, window, NULL, LVM_ADDSINGLE,\
  883.                              NULL, entry, how, 0L )
  884.  
  885. #define AddEntryVisible(window,object,entry,how)\
  886.         BGUI_DoGadgetMethod( object, window, NULL, LVM_ADDSINGLE,\
  887.                              NULL, entry, how, LVASF_MAKEVISIBLE )
  888.  
  889. #define AddEntrySelect(window,object,entry,how)\
  890.         BGUI_DoGadgetMethod( object, window, NULL, LVM_ADDSINGLE,\
  891.                              NULL, entry, how, LVASF_SELECT )
  892.  
  893. #define InsertEntry(window,object,entry,where)\
  894.         BGUI_DoGadgetMethod( object, window, NULL, LVM_INSERTSINGLE,\
  895.                              NULL, where, entry, 0L )
  896.  
  897. #define InsertEntryVisible(window,object,entry,where)\
  898.         BGUI_DoGadgetMethod( object, window, NULL, LVM_INSERTSINGLE,\
  899.                              NULL, where, entry, LVASF_MAKEVISIBLE )
  900.  
  901. #define InsertEntrySelect(window,object,entry,where)\
  902.         BGUI_DoGadgetMethod( object, window, NULL, LVM_INSERTSINGLE,\
  903.                              NULL, where, entry, LVASF_SELECT )
  904.  
  905. #define ClearList(window,object)\
  906.         BGUI_DoGadgetMethod( object, window, NULL, LVM_CLEAR, NULL )
  907.  
  908. #define FirstEntry(object)\
  909.         DoMethod( object, LVM_FIRSTENTRY, NULL, 0L )
  910.  
  911. #define FirstSelected(object)\
  912.         DoMethod( object, LVM_FIRSTENTRY, NULL, LVGEF_SELECTED )
  913.  
  914. #define LastEntry(object)\
  915.         DoMethod( object, LVM_LASTENTRY, NULL, 0L )
  916.  
  917. #define LastSelected(object)\
  918.         DoMethod( object, LVM_LASTENTRY, NULL, LVGEF_SELECTED )
  919.  
  920. #define NextEntry(object,last)\
  921.         DoMethod( object, LVM_NEXTENTRY, last, 0L )
  922.  
  923. #define NextSelected(object,last)\
  924.         DoMethod( object, LVM_NEXTENTRY, last, LVGEF_SELECTED )
  925.  
  926. #define PrevEntry(object,last)\
  927.         DoMethod( object, LVM_PREVENTRY, last, 0L )
  928.  
  929. #define PrevSelected(object,last)\
  930.         DoMethod( object, LVM_PREVENTRY, last, LVGEF_SELECTED )
  931.  
  932. #define RemoveEntry(object,entry)\
  933.         DoMethod( object, LVM_REMENTRY, NULL, entry )
  934.  
  935. #define RemoveEntryVisible(window,object,entry)\
  936.         BGUI_DoGadgetMethod( object, window, NULL, LVM_REMENTRY, NULL, entry )
  937.  
  938. #define RefreshList(window,object)\
  939.         BGUI_DoGadgetMethod( object, window, NULL, LVM_REFRESH, NULL )
  940.  
  941. #define RedrawList(window,object)\
  942.         BGUI_DoGadgetMethod( object, window, NULL, LVM_REDRAW, NULL )
  943.  
  944. #define SortList(window,object)\
  945.         BGUI_DoGadgetMethod( object, window, NULL, LVM_SORT, NULL )
  946.  
  947. #define LockList(object)\
  948.         DoMethod( object, LVM_LOCKLIST, NULL )
  949.  
  950. #define UnlockList(window,object)\
  951.         BGUI_DoGadgetMethod( object, window, NULL, LVM_UNLOCKLIST, NULL )
  952.  
  953. #define MoveEntry(window,object,entry,dir)\
  954.         BGUI_DoGadgetMethod( object, window, NULL, LVM_MOVE, NULL,\
  955.                              entry, dir )
  956.  
  957. #define MoveSelectedEntry(window,object,dir)\
  958.         BGUI_DoGadgetMethod( object, window, NULL, LVM_MOVE, NULL,\
  959.                              NULL, dir )
  960.  
  961. #define ReplaceEntry(window,object,old,new)\
  962.         BGUI_DoGadgetMethod( object, window, NULL, LVM_REPLACE, NULL,\
  963.                              old, new )
  964.  
  965. #define RemoveSelected(window,object)\
  966.         BGUI_DoGadgetMethod( object, window, NULL, LVM_REMSELECTED, NULL )
  967.  
  968. /*****************************************************************************
  969.  *
  970.  *      Window class method macros.
  971.  */
  972. #define GadgetKey(wobj,gobj,key)\
  973.         DoMethod( wobj, WM_GADGETKEY, NULL, gobj, key )
  974.  
  975. #define WindowOpen(wobj)\
  976.         ( struct Window * )DoMethod( wobj, WM_OPEN )
  977.  
  978. #define WindowClose(wobj)\
  979.         DoMethod( wobj, WM_CLOSE )
  980.  
  981. #define WindowBusy(wobj)\
  982.         DoMethod( wobj, WM_SLEEP )
  983.  
  984. #define WindowReady(wobj)\
  985.         DoMethod( wobj, WM_WAKEUP )
  986.  
  987. #define HandleEvent(wobj)\
  988.         DoMethod( wobj, WM_HANDLEIDCMP )
  989.  
  990. #define DisableMenu(wobj,id,set)\
  991.         DoMethod( wobj, WM_DISABLEMENU, id, set )
  992.  
  993. #define CheckItem(wobj,id,set)\
  994.         DoMethod( wobj, WM_CHECKITEM, id, set )
  995.  
  996. #define MenuDisabled(wobj,id)\
  997.         DoMethod( wobj, WM_MENUDISABLED, id )
  998.  
  999. #define ItemChecked(wobj,id)\
  1000.         DoMethod( wobj, WM_ITEMCHECKED, id )
  1001.  
  1002. #define GetAppMsg(wobj)\
  1003.         ( struct AppMessage * )DoMethod( wobj, WM_GETAPPMSG )
  1004.  
  1005. #define AddUpdate(wobj,id,target,map)\
  1006.         DoMethod( wobj, WM_ADDUPDATE, id, target, map )
  1007.  
  1008. #define GetSignalWindow(wobj)\
  1009.         ( struct Window * )DoMethod( wobj, WM_GET_SIGNAL_WINDOW )
  1010.  
  1011. /*****************************************************************************
  1012.  *
  1013.  *      Commodity class method macros.
  1014.  */
  1015. #define AddHotkey(broker,desc,id,flags)\
  1016.         DoMethod( broker, CM_ADDHOTKEY, desc, id, flags )
  1017.  
  1018. #define RemHotkey(broker,id)\
  1019.         DoMethod( broker, CM_REMHOTKEY, id )
  1020.  
  1021. #define DisableHotkey(broker,id)\
  1022.         DoMethod( broker, CM_DISABLEHOTKEY, id )
  1023.  
  1024. #define EnableHotKey(broker,id)\
  1025.         DoMethod( broker, CM_ENABLEHOTKEY, id )
  1026.  
  1027. #define EnableBroker(broker)\
  1028.         DoMethod( broker, CM_ENABLEBROKER )
  1029.  
  1030. #define DisableBroker(broker)\
  1031.         DoMethod( broker, CM_DISABLEBROKER )
  1032.  
  1033. #define MsgInfo(broker,type,id,data)\
  1034.         DoMethod( broker, CM_MSGINFO,\
  1035.                   ( ULONG * )type,\
  1036.                   ( ULONG * )id,\
  1037.                   ( ULONG * )data )
  1038.  
  1039. /*****************************************************************************
  1040.  *
  1041.  *      AslReq class method macros.
  1042.  */
  1043. #define DoRequest(object)\
  1044.         DoMethod( object, ASLM_DOREQUEST )
  1045.  
  1046. #endif /* BGUI_BGUI_MACROS_H */
  1047.